package com.zzw.module.mapper;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Repository
public interface TestMapper {

    int copy();

    /**
     * 查询指定表非主键的所有列名
     *
     * @param tableName
     * @return
     */
    String[] selectColumnListButPri(@Param("tableName") String tableName);

    // 以下写法是通过${}做的sql字符串拼接，而不是通过#{}作为预编译参数，故存在sql注入风险，变量值不能通过客户端传入
    // 再次强调：仅做测试用，实际使用存在sql注入风险，变量值不能通过客户端传入
    int copyWithTableName(@Param("tableSrc") String tableSrc, @Param("tableDesc") String tableDesc);

    int copyWithTableNameAndCondition(@Param("tableSrc") String tableSrc,
                                      @Param("tableDesc") String tableDesc,
                                      @Param("condition") String condition);

    int copyWithTableNameAndConditionParam(@Param("tableSrc") String tableSrc,
                                           @Param("tableDesc") String tableDesc,
                                           @Param("condition") String condition,
                                           @Param("conditionParam") String conditionParam);

    int copyWithTableNameAndConditionParamMap(Map<String, Object> paramMap);

    /**
     * 从一个表拷贝指定列的数据到另一个表
     *
     * @param tableSrc
     * @param tableDesc
     * @param columns
     * @return
     */
    int copyWithTableNameAndColumns(@Param("tableSrc") String tableSrc, @Param("tableDesc") String tableDesc, @Param("columns") String columns);


}
